package com.example.swagger.config;

import java.util.List;

/**
 * 分页数据封装类 CommonPage< T >
 * 分页数据就几个
 *
 * pageNum（页码，第几页）
 * pageSize（页面大小，一页几条数据）
 * totalPage（总页数，一共有多少页）
 * total（条数，一共有多少条数据）
 * List< T > list (分页数据）
 *
 * 这里的关键是要获取记录的总条数，而非当前页显示的总条数，那个是页大小。
 *
 * 然后将查询到的数据和前端传来的分页数据传给PageBaseInfo，这样就返回了分页后的具体信息。
 *
 * 后面业务层和持久层代码就不贴了，就正常也调用逻辑就可以了，MyBatis也是正常查询语句。
 *
 * 下面贴出返回到前端的封装基类代码。
 *
 * 3.分页信息返回基类
 */
public class PageBaseInfo {

    //需要显示的数据集  每页显示的数据量
    @SuppressWarnings("rawtypes")
    private List rows;

    //当前页
    private long page;

    //总页数
    private long total;

    //总记录数
    private long records;

    //反馈状态码
    private String code;

    //反馈信息
    private String message;

    private long size;

    //默认页面容量为20
    public final static long NO_SIZE = 20;


    public PageBaseInfo() {
        this.size= NO_SIZE;
    }

    public PageBaseInfo(List rows, long page, long records, long size) {
        this.rows = rows;//数据集合
        this.page = page;//当前页
        this.records = records;//总记录数
        this.size = size;//页面容量
        this.total = (records + this.size - 1)/this.size;//总页数
    }

    public long getSize() {
        return size;
    }

    public void setSize(long size) {
        this.size = size;
    }

    @SuppressWarnings("rawtypes")
    public List getRows() {
        return rows;
    }

    @SuppressWarnings("rawtypes")
    public void setRows(List rows) {
        this.rows = rows;
    }

    public long getPage() {
        return page;
    }

    public void setPage(long page) {
        this.page = page;
    }

    public long getTotal() {
        return total;
    }

    public void setTotal(long total) {
        this.total = total;
    }

    public long getRecords() {
        return records;
    }

    public void setRecords(long records) {
        this.records = records;
        //设置总记录数的时候同时设置总页数
        setTotal((records + this.size - 1)/this.size);
    }
    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

}
